﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class Dog
{
    // poleta
    private string name;
    private byte age;
    private string sex;
    //swoistwa-dawat ni dostyp do poletata
    // swoistwo bez ograni4eniq
    // imeto na promenliwata s glawna bukwa
    public string Name
    {
        get { return this.name; }
        protected set { this.name = value; }
    }
    // swoistwo sys ogranicheniq
    public string Sex
    {
        get { return this.sex; }
        set 
        {

            if (value.Equals("f") == true || value.Equals("m") == true)
            {
                this.sex = value;
            }
            else
            {
                throw new ArgumentException("What is that sex ?");
            }
        }
    }
    public byte Age
    {
        get { return this.age; }//kato izwikam age wzemi towa
        set { this.age = value; }// kato inizializiram age postawi towa
    }

    // konstruktorite mi dawat nachalnata inicializaciq na obekta moje i da e prazen konstruktoryt
    // s imeto na clasyt i dwete sa s glawni bukwi
    public Dog(string name, string sex, byte age)
    {
        this.Name = name;
        this.Sex = sex;
        this.Age = age;
        // tuk mojem da slojim this.poleto ili swoistwoto
        //ako slojim poleto oba4e prowerkata za swoistwoto e nqwalidna i za towa se slaga
        //SWOISTWOTO
    }
    //prazen kostruktor
    public Dog()
        : this("NoName", "?", 0)
    {
        // moga da gi inicializiram i tuk ,no ima powtorenie
        //this.Name = name......
        //....
        //....
        //zatowa izpolzwame this s wtoroto si prednazna4enie (izwikai konstruktor s tolkowa parametri)
    }
    //override na ToString
    public override string ToString()
    {
        return this.Name + " ela" ;
    }
    //da widq za swoistwo koeto e awtomati4no i kak da zabranq na poleto 4erez swoistwoto da se wywejda ot maina:)
  
    //Enumeration towa e list s imena i samo ot nego mojen da polzwame
    public enum DayOfWeek
    {
        Mon, Tue, Wed, Thu, Fri, Sat, Sun
    }
    //encapsulation e da dyrjih whodnite promenliwi prawilni prez set-a construktoryt da e s properties ,da hwyrlq exeptions
    // constantite i readonlytata se izpolzwat kato swoistwa naprawo.Ne is se pi6e pole i sa s Glawna bukwa

}
class Program
{
    static void Main()
    {
        Dog d = new Dog("sharo1", "f", 18);
        //Console.WriteLine(d.Sex );
        //d.Sex = "c";
       // Console.WriteLine(d.Sex);
       // Console.WriteLine(d.ToString());
        Console.WriteLine(d);
        Console.WriteLine(d.Name);
        //string a = null;
        //Console.WriteLine(a.Length);
       
        
    }
}

